/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Itens;

import Engine.Fisica.Clip;
import java.awt.Component;
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.MediaTracker;
import java.awt.Toolkit;
import java.net.URL;
import jogopoo.Efeitos.Efeito;
import jogopoo.Efeitos.EfeitosTela;
import jogopoo.Engine.EngineSom;
import jogopoo.Grafico.GrafCenario;
import jogopoo.Util.Matematica;

/**
 *Classe dos objetos NuclearEx, Explosao Nuclear
 * @author Administrador
 */
public class NuclearEx extends Efeito {

    public NuclearEx(GrafCenario cenario, int x, int y) {

        super(cenario);
        posicao.x = x;
        posicao.y = y;
        indice = 0;
        EngineSom som = new EngineSom("sons/expld2.wav");
        som.play();
        EfeitosTela.setAlpha(1);
    }
/**
 * Carrega as imgens antes que o objeto seja instanciado
 * @param component
 * @throws InterruptedException
 */
    public static void carregarImagens(Component component) throws InterruptedException {
        sprite = new Image[64];
        MediaTracker mediaTracker = new MediaTracker(component);

        for (int i = 1; i < 64; ++i) {
            String filename = "/imagens/efeitos/nuclearex/nuclearEx00" + i + ".png";
            URL url = Clip.class.getResource(filename);
            sprite[i] = Toolkit.getDefaultToolkit().getImage(url);
            mediaTracker.addImage(sprite[i], i);
        }

        mediaTracker.waitForAll();
    }

    @Override
    public void desenha(Graphics2D g2) {
        g2.drawImage(sprite[indice],
                posicao.x - 128, posicao.y - 128, cenario);

        indice++;

        if (indice == sprite.length - 1) {
            cenario.getListaEfeitos().remove(this);
        }
    }
/**
 * Mata os aliens que estao num raio de 128 da explosao
 */
    @Override
    public void especial() {
        for (int i = 0; i < cenario.getListaAliens().size(); ++i) {
            if (Matematica.distanciaPonto(posicao.x , posicao.y , cenario.getListaAliens().get(i).getPosicao().x,
                    cenario.getListaAliens().get(i).getPosicao().y) < 128) {
                cenario.getListaAliens().remove(i);
                cenario.getJanela().incrementaScore(100);

            }
        }

    }
    private static Image[] sprite;
    private int indice;
}
